A serial attached SCSI (SAS) architecture defines a serial device interconnect and a transport protocol that specifies rules for information exchange between devices. The devices may include, for example, servers, operating systems, Hard Disk Drives (HDDs), Solid State Drives (SSDs), without limitation. An SAS controller, containing one or more SAS ports, is capable of establishing a path between an SAS initiator port at the SAS controller and an SAS target port at an I/O device, such as an HDD or an SSD. In order for an SAS controller to establish communication paths with multiple I/O devices, an SAS expander may be positioned between the SAS controller and the I/O devices. The SAS expander enables connections between a port of the SAS controller and multiple I/O ports by routing connections between the expander ports.
Target devices in an SAS domain may include both buffered drives and un-buffered drives. When buffered drives are mixed with un-buffered drives in the same SAS domain, connections to the un-buffered drives may result in starvation of the buffered drives. When the buffering feature is enabled, as in a buffered drive, the buffered drive transfers a fewer number of frames per SAS connection than an un-buffered drive because the number of frames transferred per SAS connection is governed by the buffer size designated in the PHY layer. For example, for a 128 KB size I/O (128 1K data frames), a buffered drive may transfer 23 frames in each connection until all of the 128 data frames are transferred. In contrast, an un-buffered drive would transfer all of the 128 data frames in a single connection. As such, un-buffered drives will complete the data transfer faster than the buffered drive because it is only necessary for the un-buffered to arbitrate and connect once, whereas the buffered drive must arbitrate and connect multiple times to complete the data transfer.
In addition, in the SAS protocol, data transfer occurs between an initiator and a target device when connections are established between the two devices. The establishment of the connections are governed by SAS arbitration rules, which are dominated by Arbitration Wait Time (AWT) values, initialized at zero for a new connection. The number of frames that are transferred during a connection from/to a particular drive, is dependent upon the SCSI I/O size and the outstanding number of commands. For example, a large 128 KB size I/O may transfer up to 128 KB of data in one connection, whereas a 4 KB size I/O would only transfer 4 KB of data. Thus, to transfer 128 KB of data, the device having a 128 KB size I/O would require only a single connection, whereas the device having a 4 KB size I/O would require 32 connections. SSDs are normally used for small size I/O accesses, whereas HDDs are normally used for larger size I/O access. As such, an SAS domain that includes a mix of different sizes and types of drives (i.e. 22.5G/12G/6G SSDs/HDDs) may result in an effect similar to the buffering starvation effect described above.
Input/output operations per second (IOPS) of the SAS drives is one important aspect of an SAS domain. For some SAS applications, it is required that the operating temperature of the unit containing the SAS drives be maintained below a specific temperature. Since the IOPS of the SAS drives effects the operating temperature of the unit, it is desirable to be able to control the IOPS to the SAS drives, thereby managing the operating temperature of the SAS unit housing the SAS drives.
Quality of Service (QoS) is another important aspect of an SAS domain employing an SAS protocol. The performance of the I/O target devices in the SAS domain affects the QoS, however, the SAS protocol does not define a QoS feature other than providing for fairness among I/O target devices, on a connection basis. As such, if different types of drives, such as 22.5G SSDs and 6G HDDs, are mixed in a Just Bunch of Drives (JBODs) connected to the SAS expander, the HDDs may be allowed to utilize a higher percentage of the SAS link than the SSDs, thereby starving the connection with the SSDs, which results in an undesirable lower performance for the SSD devices.
Accordingly, what is needed in the art is an improved system and method for controlling the performance of target devices in an SAS topology.